﻿#region using

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;

#endregion

namespace ProjetDialogue
{
    class Sonde
    {
#region variables_sonde
        
        private Texture2D skin;
        private Vector2 position;
        //private Rectangle source;
        //private Rectangle destination;
        private Rectangle gameZone;
        private float vitesseHaut;
        private float vitesseBas;
        private float vitesseGauche;
        private float vitesseDroit;
        private int vies;

#endregion

#region constructeur
        
        public Sonde(Texture2D dSkin, Vector2 dPosition, Rectangle dGameZone)
        {
            vitesseHaut = 0.00f;
            vitesseBas = 0.00f;
            vitesseGauche = 0.00f;
            vitesseDroit = 0.00f;
            vies = 3;

            gameZone = dGameZone;
            skin = dSkin;
            position = dPosition;
            //source = new Rectangle((int)position.X, (int)position.Y, skin.Width, skin.Height);
            //destination = new Rectangle((int)position.X, (int)position.Y, skin.Width, skin.Height);
        }

#endregion

#region gestion_vitesse_bas

        private float increaseVitesseBas()
        {
            if (vitesseBas <= -3.00f)
                return vitesseBas = -3.00f;
            else
                return vitesseBas -= 0.10f;
        }

        private float decreaseVitesseBas()
        {
            if (vitesseBas >= 0.00f)
                return vitesseBas = 0.00f;
            else
                return vitesseBas += 0.05f;
        }

#endregion

#region gestion_vitesse_haut

        private float increaseVitesseHaut()
        {
            if (vitesseHaut >= 3.00f)
                return vitesseHaut = 3.00f;
            else
                return vitesseHaut += 0.10f;
        }

        private float decreaseVitesseHaut()
        {
            if (vitesseHaut <= 0.00f)
                return vitesseHaut = 0.00f;
            else
                return vitesseHaut -= 0.05f;
        }

#endregion

#region gestion_vitesse_gauche

        private float increaseVitesseGauche()
        {
            if (vitesseGauche >= 3.00f)
                return vitesseGauche = 3.00f;
            else
                return vitesseGauche += 0.10f;
        }

        private float decreaseVitesseGauche()
        {
            if (vitesseGauche <= 0.00f)
                return vitesseGauche = 0.00f;
            else
                return vitesseGauche -= 0.05f;
        }

#endregion

#region gestion_vitesse_droit

        private float increaseVitesseDroit()
        {
            if (vitesseDroit <= -3.00f)
                return vitesseDroit = -3.00f;
            else
                return vitesseDroit -= 0.10f;
        }

        private float decreaseVitesseDroit()
        {
            if (vitesseDroit >= 0.00f)
                return vitesseDroit = 0.00f;
            else
                return vitesseDroit += 0.05f;
        }

#endregion

#region draw_update

        public void Draw(SpriteBatch batch)
        {
            batch.Draw(skin, position, Color.White);
            //batch.Draw(skin, taille, destination, Color.White, rotation, new Vector2(taille.Width/2, taille.Height/2), SpriteEffects.None, 1.0f);
        }

        public void Update(gestionClavier input)
        {

            if (input.MoteurHaut)
            {
                increaseVitesseHaut();                
            }
            if (input.MoteurBas)
            {
                increaseVitesseBas();
            }
            if (input.MoteurGauche)
            {
                increaseVitesseGauche();
            }
            if (input.MoteurDroit)
            {
                increaseVitesseDroit();
            }

            if (!input.MoteurHaut)
            {
                decreaseVitesseHaut();
            }
            if (!input.MoteurBas)
            {
                decreaseVitesseBas();
            }
            if (!input.MoteurGauche)
            {
                decreaseVitesseGauche();
            }
            if (!input.MoteurDroit)
            {
                decreaseVitesseDroit();
            }

            position.Y += ((int)vitesseHaut + (int)vitesseBas);
            position.X += ((int)vitesseGauche + (int)vitesseDroit);         
        }

#endregion
    }
}